/**
 * 初始化地图
 */

/* global BMapGL */

/* global darkStyle */
export function initMap(options) {
  options = Object.assign({
    tilt: 45,
    heading: 0
  }, options);
  var map = new BMapGL.Map('map_container', {
    restrictCenter: false,
    style: {
      styleJson: options.style || wyStyle
    }
  });
  map.enableKeyboard();
  map.enableScrollWheelZoom();
  map.enableInertialDragging();
  map.enableContinuousZoom();
  map.enableAutoResize();
  // map.setMapType(BMAP_EARTH_MAP);
  // map.setDisplayOptions({
  //     indoor: true,
  //     poi: true,
  //     skyColors: options.skyColors || [
  //         'rgba(5, 5, 30, 0.01)',
  //         'rgba(5, 5, 30, 0.05)'
  //     ]
  // });
  if (options.center && options.zoom) {
    map.centerAndZoom(new BMapGL.Point(options.center[0], options.center[1]), options.zoom);
  }

  map.setTilt(options.tilt);
  map.setHeading(options.heading);
  return map;
}


export function isPointInPolygon(point, polygon) {
  //检查类型
  if (!(point instanceof BMap.Point) ||
    !(polygon instanceof BMap.Polygon)) {
    return false;
  }

  //首先判断点是否在多边形的外包矩形内，如果在，则进一步判断，否则返回false
  var polygonBounds = polygon.getBounds();
  if (!isPointInRect(point, polygonBounds)) {
    return false;
  }

  var pts = polygon.getPath(); //获取多边形点

  //下述代码来源：http://paulbourke.net/geometry/insidepoly/，进行了部分修改
  //基本思想是利用射线法，计算射线与多边形各边的交点，如果是偶数，则点在多边形外，否则
  //在多边形内。还会考虑一些特殊情况，如点在多边形顶点上，点在多边形边上等特殊情况。

  var N = pts.length;
  var boundOrVertex = true; //如果点位于多边形的顶点或边上，也算做点在多边形内，直接返回true
  var intersectCount = 0; //cross points count of x 
  var precision = 2e-10; //浮点类型计算时候与0比较时候的容差
  var p1, p2; //neighbour bound vertices
  var p = point; //测试点

  p1 = pts[0]; //left vertex        
  for (var i = 1; i <= N; ++i) { //check all rays            
    if (p.equals(p1)) {
      return boundOrVertex; //p is an vertex
    }

    p2 = pts[i % N]; //right vertex            
    if (p.lat < Math.min(p1.lat, p2.lat) || p.lat > Math.max(p1.lat, p2.lat)) { //ray is outside of our interests                
      p1 = p2;
      continue; //next ray left point
    }

    if (p.lat > Math.min(p1.lat, p2.lat) && p.lat < Math.max(p1.lat, p2.lat)) { //ray is crossing over by the algorithm (common part of)
      if (p.lng <= Math.max(p1.lng, p2.lng)) { //x is before of ray                    
        if (p1.lat == p2.lat && p.lng >= Math.min(p1.lng, p2.lng)) { //overlies on a horizontal ray
          return boundOrVertex;
        }

        if (p1.lng == p2.lng) { //ray is vertical                        
          if (p1.lng == p.lng) { //overlies on a vertical ray
            return boundOrVertex;
          } else { //before ray
            ++intersectCount;
          }
        } else { //cross point on the left side                        
          var xinters = (p.lat - p1.lat) * (p2.lng - p1.lng) / (p2.lat - p1.lat) + p1.lng; //cross point of lng                        
          if (Math.abs(p.lng - xinters) < precision) { //overlies on a ray
            return boundOrVertex;
          }

          if (p.lng < xinters) { //before ray
            ++intersectCount;
          }
        }
      }
    } else { //special case when ray is crossing through the vertex                
      if (p.lat == p2.lat && p.lng <= p2.lng) { //p crossing over p2                    
        var p3 = pts[(i + 1) % N]; //next vertex                    
        if (p.lat >= Math.min(p1.lat, p3.lat) && p.lat <= Math.max(p1.lat, p3.lat)) { //p.lat lies between p1.lat & p3.lat
          ++intersectCount;
        } else {
          intersectCount += 2;
        }
      }
    }
    p1 = p2; //next ray left point
  }

  if (intersectCount % 2 == 0) { //偶数在多边形外
    return false;
  } else { //奇数在多边形内
    return true;
  }
}

function isPointInRect(point, bounds) {
  //检查类型是否正确
  if (!(point instanceof BMap.Point) ||
    !(bounds instanceof BMap.Bounds)) {
    return false;
  }
  var sw = bounds.getSouthWest(); //西南脚点
  var ne = bounds.getNorthEast(); //东北脚点
  return (point.lng >= sw.lng && point.lng <= ne.lng && point.lat >= sw.lat && point.lat <= ne.lat);
}

var wyStyle = [{
  "featureType": "land",
  "elementType": "geometry",
  "stylers": {
    "color": "#050e17ff",
    "visibility": "on"
  }
}, {
  "featureType": "water",
  "elementType": "labels.text.fill",
  "stylers": {
    "color": "#050e17ff",
    "visibility": "on"
  }
}, {
  "featureType": "building",
  "elementType": "geometry.fill",
  "stylers": {
    "color": "#000208ff",
    "visibility": "on"
  }
}, {
  "featureType": "building",
  "elementType": "geometry.stroke",
  "stylers": {
    "color": "#000000ff",
    "visibility": "on"
  }
}, {
  "featureType": "water",
  "elementType": "geometry",
  "stylers": {
    "color": "#0160abff",
    "visibility": "on"
  }
}, {
  "featureType": "village",
  "elementType": "labels",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "town",
  "elementType": "labels",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "district",
  "elementType": "labels",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "country",
  "elementType": "labels.text.fill",
  "stylers": {
    "color": "#0160abff",
    "visibility": "on"
  }
}, {
  "featureType": "city",
  "elementType": "labels.text.fill",
  "stylers": {
    "color": "#0160abff",
    "visibility": "on"
  }
}, {
  "featureType": "continent",
  "elementType": "labels.text.fill",
  "stylers": {
    "color": "#0160abff",
    "visibility": "on"
  }
}, {
  "featureType": "poilabel",
  "elementType": "labels",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "poilabel",
  "elementType": "labels.icon",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "scenicspotslabel",
  "elementType": "labels.icon",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "scenicspotslabel",
  "elementType": "labels.text.fill",
  "stylers": {
    "color": "#0160abff",
    "visibility": "on"
  }
}, {
  "featureType": "transportationlabel",
  "elementType": "labels.text.fill",
  "stylers": {
    "color": "#0160abff",
    "visibility": "on"
  }
}, {
  "featureType": "transportationlabel",
  "elementType": "labels.icon",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "airportlabel",
  "elementType": "labels.text.fill",
  "stylers": {
    "color": "#0160abff",
    "visibility": "on"
  }
}, {
  "featureType": "airportlabel",
  "elementType": "labels.icon",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "road",
  "elementType": "geometry.fill",
  "stylers": {
    "color": "#0d2d4cff",
    "visibility": "on"
  }
}, {
  "featureType": "road",
  "elementType": "geometry.stroke",
  "stylers": {
    "color": "#000a24ff",
    "visibility": "on"
  }
}, {
  "featureType": "road",
  "elementType": "geometry",
  "stylers": {
    "weight": 3
  }
}, {
  "featureType": "green",
  "elementType": "geometry",
  "stylers": {
    "color": "#04162bff",
    "visibility": "on"
  }
}, {
  "featureType": "scenicspots",
  "elementType": "geometry",
  "stylers": {
    "color": "#050e17ff",
    "visibility": "on"
  }
}, {
  "featureType": "scenicspots",
  "elementType": "labels.text.fill",
  "stylers": {
    "color": "#0160abff",
    "visibility": "on"
  }
}, {
  "featureType": "scenicspots",
  "elementType": "labels.text.stroke",
  "stylers": {
    "weight": 1,
    "color": "#ffffffff",
    "visibility": "on"
  }
}, {
  "featureType": "continent",
  "elementType": "labels.text.stroke",
  "stylers": {
    "color": "#ffffffff",
    "visibility": "on",
    "weight": 1
  }
}, {
  "featureType": "country",
  "elementType": "labels.text.stroke",
  "stylers": {
    "color": "#ffffffff",
    "visibility": "on",
    "weight": 1
  }
}, {
  "featureType": "city",
  "elementType": "labels.text.stroke",
  "stylers": {
    "color": "#ffffffff",
    "visibility": "on",
    "weight": 1
  }
}, {
  "featureType": "city",
  "elementType": "labels.icon",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "scenicspotslabel",
  "elementType": "labels.text.stroke",
  "stylers": {
    "color": "#ffffffff",
    "visibility": "on",
    "weight": 1
  }
}, {
  "featureType": "airportlabel",
  "elementType": "labels.text.stroke",
  "stylers": {
    "color": "#ffffffff",
    "visibility": "on",
    "weight": 1
  }
}, {
  "featureType": "transportationlabel",
  "elementType": "labels.text.stroke",
  "stylers": {
    "color": "#ffffffff",
    "visibility": "on",
    "weight": 1
  }
}, {
  "featureType": "railway",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "subway",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "highwaysign",
  "elementType": "labels",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "nationalwaysign",
  "elementType": "labels",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "nationalwaysign",
  "elementType": "labels.icon",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "provincialwaysign",
  "elementType": "labels",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "provincialwaysign",
  "elementType": "labels.icon",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "tertiarywaysign",
  "elementType": "labels",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "tertiarywaysign",
  "elementType": "labels.icon",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "subwaylabel",
  "elementType": "labels",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "subwaylabel",
  "elementType": "labels.icon",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "road",
  "elementType": "labels.text.fill",
  "stylers": {
    "color": "#0160abff",
    "visibility": "on",
    "weight": 90
  }
}, {
  "featureType": "road",
  "elementType": "labels.text.stroke",
  "stylers": {
    "color": "#ffffffff",
    "visibility": "on",
    "weight": 1
  }
}, {
  "featureType": "shopping",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "scenicspots",
  "elementType": "labels",
  "stylers": {
    "visibility": "on"
  }
}, {
  "featureType": "scenicspotslabel",
  "elementType": "labels",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "manmade",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "manmade",
  "elementType": "labels",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "highwaysign",
  "elementType": "labels.icon",
  "stylers": {
    "visibility": "off"
  }
}, {
  "featureType": "water",
  "elementType": "labels.text.stroke",
  "stylers": {
    "color": "#04162b00",
    "visibility": "on"
  }
}, {
  "featureType": "road",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "6"
  }
}, {
  "featureType": "road",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "7"
  }
}, {
  "featureType": "road",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "8"
  }
}, {
  "featureType": "road",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "9"
  }
}, {
  "featureType": "road",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "6"
  }
}, {
  "featureType": "road",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "7"
  }
}, {
  "featureType": "road",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "8"
  }
}, {
  "featureType": "road",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "9"
  }
}, {
  "featureType": "road",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "6"
  }
}, {
  "featureType": "road",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "7"
  }
}, {
  "featureType": "road",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "8"
  }
}, {
  "featureType": "road",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "9"
  }
}, {
  "featureType": "road",
  "elementType": "labels.text",
  "stylers": {
    "fontsize": 24
  }
}, {
  "featureType": "highway",
  "elementType": "labels.text.stroke",
  "stylers": {
    "color": "#ffffffff",
    "visibility": "on",
    "weight": 1
  }
}, {
  "featureType": "highway",
  "elementType": "geometry.fill",
  "stylers": {
    "color": "#0d2d4cff",
    "visibility": "on"
  }
}, {
  "featureType": "highway",
  "elementType": "geometry.stroke",
  "stylers": {
    "color": "#1c4f7eff"
  }
}, {
  "featureType": "highway",
  "elementType": "labels.text.fill",
  "stylers": {
    "color": "#0160abff",
    "visibility": "on"
  }
}, {
  "featureType": "highway",
  "elementType": "geometry",
  "stylers": {
    "weight": 3
  }
}, {
  "featureType": "nationalway",
  "elementType": "geometry.fill",
  "stylers": {
    "color": "#0d2d4cff",
    "visibility": "on"
  }
}, {
  "featureType": "nationalway",
  "elementType": "geometry.stroke",
  "stylers": {
    "color": "#1c4f7eff"
  }
}, {
  "featureType": "nationalway",
  "elementType": "labels.text.fill",
  "stylers": {
    "color": "#0160abff",
    "visibility": "on"
  }
}, {
  "featureType": "nationalway",
  "elementType": "labels.text.stroke",
  "stylers": {
    "color": "#ffffffff",
    "visibility": "on",
    "weight": 1
  }
}, {
  "featureType": "nationalway",
  "elementType": "geometry",
  "stylers": {
    "weight": 3
  }
}, {
  "featureType": "provincialway",
  "elementType": "geometry.fill",
  "stylers": {
    "color": "#0d2d4cff",
    "visibility": "on"
  }
}, {
  "featureType": "cityhighway",
  "elementType": "geometry.fill",
  "stylers": {
    "color": "#0d2d4cff",
    "visibility": "on"
  }
}, {
  "featureType": "arterial",
  "elementType": "geometry.fill",
  "stylers": {
    "color": "#0d2d4cff",
    "visibility": "on"
  }
}, {
  "featureType": "tertiaryway",
  "elementType": "geometry.fill",
  "stylers": {
    "color": "#0d2d4cff",
    "visibility": "on"
  }
}, {
  "featureType": "fourlevelway",
  "elementType": "geometry.fill",
  "stylers": {
    "color": "#0d2d4cff",
    "visibility": "on"
  }
}, {
  "featureType": "local",
  "elementType": "geometry.fill",
  "stylers": {
    "color": "#0d2d4cff",
    "visibility": "on"
  }
}, {
  "featureType": "provincialway",
  "elementType": "geometry.stroke",
  "stylers": {
    "color": "#000a24ff",
    "visibility": "on"
  }
}, {
  "featureType": "cityhighway",
  "elementType": "geometry.stroke",
  "stylers": {
    "color": "#000a24ff",
    "visibility": "on"
  }
}, {
  "featureType": "arterial",
  "elementType": "geometry.stroke",
  "stylers": {
    "color": "#000a24ff",
    "visibility": "on"
  }
}, {
  "featureType": "tertiaryway",
  "elementType": "geometry.stroke",
  "stylers": {
    "color": "#000a24ff",
    "visibility": "on"
  }
}, {
  "featureType": "fourlevelway",
  "elementType": "geometry.stroke",
  "stylers": {
    "color": "#000a24ff",
    "visibility": "on"
  }
}, {
  "featureType": "local",
  "elementType": "geometry.stroke",
  "stylers": {
    "color": "#000a24ff",
    "visibility": "on"
  }
}, {
  "featureType": "local",
  "elementType": "labels.text.fill",
  "stylers": {
    "color": "#0160abff",
    "visibility": "on"
  }
}, {
  "featureType": "local",
  "elementType": "labels.text.stroke",
  "stylers": {
    "color": "#ffffffff",
    "visibility": "on",
    "weight": 1
  }
}, {
  "featureType": "fourlevelway",
  "elementType": "labels.text.fill",
  "stylers": {
    "color": "#0160abff",
    "visibility": "on"
  }
}, {
  "featureType": "tertiaryway",
  "elementType": "labels.text.fill",
  "stylers": {
    "color": "#0160abff",
    "visibility": "on"
  }
}, {
  "featureType": "arterial",
  "elementType": "labels.text.fill",
  "stylers": {
    "color": "#0160abff",
    "visibility": "on"
  }
}, {
  "featureType": "cityhighway",
  "elementType": "labels.text.fill",
  "stylers": {
    "color": "#0160abff",
    "visibility": "on"
  }
}, {
  "featureType": "provincialway",
  "elementType": "labels.text.fill",
  "stylers": {
    "color": "#0160abff",
    "visibility": "on"
  }
}, {
  "featureType": "provincialway",
  "elementType": "labels.text.stroke",
  "stylers": {
    "color": "#ffffffff",
    "visibility": "on",
    "weight": 1
  }
}, {
  "featureType": "cityhighway",
  "elementType": "labels.text.stroke",
  "stylers": {
    "color": "#ffffffff",
    "visibility": "on",
    "weight": 1
  }
}, {
  "featureType": "arterial",
  "elementType": "labels.text.stroke",
  "stylers": {
    "color": "#ffffffff",
    "visibility": "on",
    "weight": 1
  }
}, {
  "featureType": "tertiaryway",
  "elementType": "labels.text.stroke",
  "stylers": {
    "color": "#ffffffff",
    "visibility": "on",
    "weight": 1
  }
}, {
  "featureType": "fourlevelway",
  "elementType": "labels.text.stroke",
  "stylers": {
    "color": "#ffffffff",
    "visibility": "on",
    "weight": 1
  }
}, {
  "featureType": "fourlevelway",
  "elementType": "geometry",
  "stylers": {
    "weight": 1
  }
}, {
  "featureType": "tertiaryway",
  "elementType": "geometry",
  "stylers": {
    "weight": 1
  }
}, {
  "featureType": "local",
  "elementType": "geometry",
  "stylers": {
    "weight": 1
  }
}, {
  "featureType": "provincialway",
  "elementType": "geometry",
  "stylers": {
    "weight": 3
  }
}, {
  "featureType": "cityhighway",
  "elementType": "geometry",
  "stylers": {
    "weight": 3
  }
}, {
  "featureType": "arterial",
  "elementType": "geometry",
  "stylers": {
    "weight": 3
  }
}, {
  "featureType": "highway",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "6"
  }
}, {
  "featureType": "highway",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "7"
  }
}, {
  "featureType": "highway",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "8"
  }
}, {
  "featureType": "highway",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "9"
  }
}, {
  "featureType": "highway",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "6"
  }
}, {
  "featureType": "highway",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "7"
  }
}, {
  "featureType": "highway",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "8"
  }
}, {
  "featureType": "highway",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "9"
  }
}, {
  "featureType": "highway",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "6"
  }
}, {
  "featureType": "highway",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "7"
  }
}, {
  "featureType": "highway",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "8"
  }
}, {
  "featureType": "highway",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "9"
  }
}, {
  "featureType": "nationalway",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "6"
  }
}, {
  "featureType": "nationalway",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "7"
  }
}, {
  "featureType": "nationalway",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "8"
  }
}, {
  "featureType": "nationalway",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "9"
  }
}, {
  "featureType": "nationalway",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "6"
  }
}, {
  "featureType": "nationalway",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "7"
  }
}, {
  "featureType": "nationalway",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "8"
  }
}, {
  "featureType": "nationalway",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "9"
  }
}, {
  "featureType": "nationalway",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "6"
  }
}, {
  "featureType": "nationalway",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "7"
  }
}, {
  "featureType": "nationalway",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "8"
  }
}, {
  "featureType": "nationalway",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "9"
  }
}, {
  "featureType": "provincialway",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "8,10",
    "level": "8"
  }
}, {
  "featureType": "provincialway",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "8,10",
    "level": "9"
  }
}, {
  "featureType": "provincialway",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "8,10",
    "level": "8"
  }
}, {
  "featureType": "provincialway",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "8,10",
    "level": "9"
  }
}, {
  "featureType": "provincialway",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "8,10",
    "level": "8"
  }
}, {
  "featureType": "provincialway",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "8,10",
    "level": "9"
  }
}, {
  "featureType": "cityhighway",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "6"
  }
}, {
  "featureType": "cityhighway",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "7"
  }
}, {
  "featureType": "cityhighway",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "8"
  }
}, {
  "featureType": "cityhighway",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "9"
  }
}, {
  "featureType": "cityhighway",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "6"
  }
}, {
  "featureType": "cityhighway",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "7"
  }
}, {
  "featureType": "cityhighway",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "8"
  }
}, {
  "featureType": "cityhighway",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "9"
  }
}, {
  "featureType": "cityhighway",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "6"
  }
}, {
  "featureType": "cityhighway",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "7"
  }
}, {
  "featureType": "cityhighway",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "8"
  }
}, {
  "featureType": "cityhighway",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "6,9",
    "level": "9"
  }
}, {
  "featureType": "arterial",
  "stylers": {
    "curZoomRegionId": "0",
    "curZoomRegion": "9,9",
    "level": "9"
  }
}, {
  "featureType": "arterial",
  "elementType": "geometry",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "9,9",
    "level": "9"
  }
}, {
  "featureType": "arterial",
  "elementType": "labels",
  "stylers": {
    "visibility": "off",
    "curZoomRegionId": "0",
    "curZoomRegion": "9,9",
    "level": "9"
  }
}, {
  "featureType": "background",
  "elementType": "geometry",
  "stylers": {
    "color": "#000424ff"
  }
}]

export var snowStyle = [{
  featureType: 'background',
  elementType: 'geometry',
  stylers: {
    color: '#fefefeff'
  }
}, {
  featureType: 'poilabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'road',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'road',
  elementType: 'geometry.fill',
  stylers: {
    color: '#f0f1f7ff'
  }
}, {
  featureType: 'road',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'highway',
  elementType: 'geometry.fill',
  stylers: {
    color: '#e8eaf5ff'
  }
}, {
  featureType: 'highway',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'nationalway',
  elementType: 'geometry.fill',
  stylers: {
    color: '#e8eaf5ff'
  }
}, {
  featureType: 'nationalway',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'provincialway',
  elementType: 'geometry.fill',
  stylers: {
    color: '#e8eaf5ff'
  }
}, {
  featureType: 'provincialway',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'railway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'highwaysign',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'highwaysign',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'nationalwaysign',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'nationalwaysign',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'provincialwaysign',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'provincialwaysign',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'tertiarywaysign',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'tertiarywaysign',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'subwaylabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'subwaylabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'poilabel',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#80868dff'
  }
}, {
  featureType: 'poilabel',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'districtlabel',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#7d82b0ff'
  }
}, {
  featureType: 'districtlabel',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'poilabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'airportlabel',
  elementType: 'labels',
  stylers: {
    visibility: 'on'
  }
}, {
  featureType: 'airportlabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'airportlabel',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#80868dff'
  }
}, {
  featureType: 'airportlabel',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'manmade',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'manmade',
  elementType: 'geometry',
  stylers: {
    color: '#eef1fbff'
  }
}, {
  featureType: 'water',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'water',
  elementType: 'geometry',
  stylers: {
    // "color": "#a7c9ffff"
    color: '#a7c9ffff'
  }
}, {
  featureType: 'green',
  elementType: 'geometry',
  stylers: {
    color: '#eef1fbff',
    visibility: 'off'
  }
}, {
  featureType: 'subway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'highway',
  elementType: 'labels',
  stylers: {
    visibility: 'on'
  }
}, {
  featureType: 'highway',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'highway',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#7d82b0ff'
  }
}, {
  featureType: 'town',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'village',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'highway',
  elementType: 'geometry',
  stylers: {
    weight: 3
  }
}, {
  featureType: 'cityhighway',
  elementType: 'geometry.fill',
  stylers: {
    color: '#e8eaf5ff'
  }
}, {
  featureType: 'arterial',
  elementType: 'geometry.fill',
  stylers: {
    color: '#e8eaf5ff'
  }
}, {
  featureType: 'arterial',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'cityhighway',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#ffffff0'
  }
}];

export var darkStyle = [{
  featureType: 'background',
  elementType: 'geometry',
  stylers: {
    color: '#070c17ff'
  }
}, {
  featureType: 'poilabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'road',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'road',
  elementType: 'geometry.fill',
  stylers: {
    color: '#151e25ff'
  }
}, {
  featureType: 'road',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'highway',
  elementType: 'geometry.fill',
  stylers: {
    color: '#27303bff'
  }
}, {
  featureType: 'highway',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'nationalway',
  elementType: 'geometry.fill',
  stylers: {
    color: '#27303bff'
  }
}, {
  featureType: 'nationalway',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'provincialway',
  elementType: 'geometry.fill',
  stylers: {
    color: '#27303bff'
  }
}, {
  featureType: 'provincialway',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'railway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'highwaysign',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'highwaysign',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'nationalwaysign',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'nationalwaysign',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'provincialwaysign',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'provincialwaysign',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'tertiarywaysign',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'tertiarywaysign',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'subwaylabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'subwaylabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'poilabel',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#80868dff'
  }
}, {
  featureType: 'poilabel',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'districtlabel',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#71767aff'
  }
}, {
  featureType: 'districtlabel',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'poilabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'airportlabel',
  elementType: 'labels',
  stylers: {
    visibility: 'on'
  }
}, {
  featureType: 'airportlabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'airportlabel',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#80868dff'
  }
}, {
  featureType: 'airportlabel',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'manmade',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'manmade',
  elementType: 'geometry',
  stylers: {
    color: '#070c17ff'
  }
}, {
  featureType: 'water',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'water',
  elementType: 'geometry',
  stylers: {
    color: '#141d27ff'
  }
}, {
  featureType: 'green',
  elementType: 'geometry',
  stylers: {
    color: '#122228ff',
    visibility: 'off'
  }
}, {
  featureType: 'subway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'highway',
  elementType: 'labels',
  stylers: {
    visibility: 'on'
  }
}, {
  featureType: 'highway',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'highway',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#5f6468ff'
  }
}, {
  featureType: 'town',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'village',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'highway',
  elementType: 'geometry',
  stylers: {
    weight: 3
  }
}, {
  featureType: 'cityhighway',
  elementType: 'geometry.fill',
  stylers: {
    color: '#27303bff'
  }
}, {
  featureType: 'arterial',
  elementType: 'geometry.fill',
  stylers: {
    color: '#27303bff'
  }
}, {
  featureType: 'arterial',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#ffffff0'
  }
}, {
  featureType: 'cityhighway',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#ffffff0'
  }
}];

var purpleStyle = [{
  featureType: 'water',
  elementType: 'all',
  stylers: {
    color: '#021019ff'
  }
}, {
  featureType: 'highway',
  elementType: 'geometry.fill',
  stylers: {
    color: '#000000ff'
  }
}, {
  featureType: 'highway',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#147a92ff'
  }
}, {
  featureType: 'arterial',
  elementType: 'geometry.fill',
  stylers: {
    color: '#000000ff'
  }
}, {
  featureType: 'arterial',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#0b3d51ff'
  }
}, {
  featureType: 'local',
  elementType: 'geometry',
  stylers: {
    color: '#000000ff'
  }
}, {
  featureType: 'land',
  elementType: 'all',
  stylers: {
    color: '#08304bff'
  }
}, {
  featureType: 'railway',
  elementType: 'geometry.fill',
  stylers: {
    color: '#000000ff'
  }
}, {
  featureType: 'railway',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#08304bff'
  }
}, {
  featureType: 'subway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'building',
  elementType: 'geometry.fill',
  stylers: {
    color: '#000000ff'
  }
}, {
  featureType: 'all',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#857f7fff'
  }
}, {
  featureType: 'all',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#000000ff'
  }
}, {
  featureType: 'building',
  elementType: 'geometry',
  stylers: {
    color: '#022338ff'
  }
}, {
  featureType: 'green',
  elementType: 'geometry',
  stylers: {
    color: '#062032ff'
  }
}, {
  featureType: 'manmade',
  elementType: 'geometry',
  stylers: {
    color: '#022338ff'
  }
}, {
  featureType: 'poi',
  elementType: 'all',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'all',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'land',
  elementType: 'all',
  stylers: {
    color: '#40495aff',
    visibility: 'on'
  }
}, {
  featureType: 'water',
  elementType: 'all',
  stylers: {
    color: '#505565ff',
    visibility: 'on'
  }
}, {
  featureType: 'green',
  elementType: 'all',
  stylers: {
    color: '#353b4dff'
  }
}, {
  featureType: 'road',
  elementType: 'geometry.fill',
  stylers: {
    color: '#2a2e3bff',
    visibility: 'on'
  }
}, {
  featureType: 'road',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#4b5163ff'
  }
}, {
  featureType: 'administrative',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#8e99bdff'
  }
}, {
  featureType: 'administrative',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#2f3547ff'
  }
}, {
  featureType: 'poilabel',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#727c9aff'
  }
}, {
  featureType: 'road',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#293045ff'
  }
}, {
  featureType: 'road',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#777e93ff'
  }
}, {
  featureType: 'town',
  elementType: 'all',
  stylers: {
    visibility: 'on'
  }
}, {
  featureType: 'subway',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#787f95ff',
    visibility: 'off'
  }
}, {
  featureType: 'subway',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#40475eff'
  }
}, {
  featureType: 'building',
  elementType: 'geometry.fill',
  stylers: {
    color: '#485161ff'
  }
}, {
  featureType: 'manmade',
  elementType: 'geometry.fill',
  stylers: {
    color: '#374053ff'
  }
}, {
  featureType: 'manmade',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#8792adff'
  }
}, {
  featureType: 'manmade',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#292f48ff'
  }
}, {
  featureType: 'districtlabel',
  elementType: 'all',
  stylers: {}
}, {
  featureType: 'scenicspotslabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'railway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'scenicspotslabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'highwaysign',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'highwaysign',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'nationalwaysign',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'nationalwaysign',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'provincialwaysign',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'provincialwaysign',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'tertiarywaysign',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'tertiarywaysign',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'subwaylabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'subwaylabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'roadarrow',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'village',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'town',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}];

var whiteStyle = [{
  featureType: 'water',
  elementType: 'geometry',
  stylers: {
    visibility: 'on',
    color: '#ccd6d7ff'
  }
}, {
  featureType: 'green',
  elementType: 'geometry',
  stylers: {
    visibility: 'on',
    color: '#dee5e5ff'
  }
}, {
  featureType: 'building',
  elementType: 'geometry',
  stylers: {
    visibility: 'on'
  }
}, {
  featureType: 'building',
  elementType: 'geometry.fill',
  stylers: {
    color: '#d1dbdbff'
  }
}, {
  featureType: 'building',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#aab6b6ff'
  }
}, {
  featureType: 'subwaystation',
  elementType: 'geometry',
  stylers: {
    visibility: 'off',
    color: '#888fa0ff'
  }
}, {
  featureType: 'education',
  elementType: 'geometry',
  stylers: {
    visibility: 'on',
    color: '#e1e7e7ff'
  }
}, {
  featureType: 'medical',
  elementType: 'geometry',
  stylers: {
    visibility: 'on',
    color: '#d1dbdbff'
  }
}, {
  featureType: 'scenicspots',
  elementType: 'geometry',
  stylers: {
    visibility: 'on',
    color: '#d1dbdbff'
  }
}, {
  featureType: 'highway',
  elementType: 'geometry',
  stylers: {
    visibility: 'on',
    weight: '4'
  }
}, {
  featureType: 'highway',
  elementType: 'geometry.fill',
  stylers: {
    color: '#ffffffff'
  }
}, {
  featureType: 'highway',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#cacfcfff'
  }
}, {
  featureType: 'highway',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'highway',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#999999ff'
  }
}, {
  featureType: 'highway',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffffff'
  }
}, {
  featureType: 'highway',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'on'
  }
}, {
  featureType: 'arterial',
  elementType: 'geometry',
  stylers: {
    visibility: 'on',
    weight: '2'
  }
}, {
  featureType: 'arterial',
  elementType: 'geometry.fill',
  stylers: {
    color: '#fbfffeff'
  }
}, {
  featureType: 'arterial',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#cacfcfff'
  }
}, {
  featureType: 'arterial',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'arterial',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#999999ff'
  }
}, {
  featureType: 'arterial',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffffff'
  }
}, {
  featureType: 'local',
  elementType: 'geometry',
  stylers: {
    visibility: 'on',
    weight: '1'
  }
}, {
  featureType: 'local',
  elementType: 'geometry.fill',
  stylers: {
    color: '#fbfffeff'
  }
}, {
  featureType: 'local',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#cacfcfff'
  }
}, {
  featureType: 'local',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'local',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#999999ff'
  }
}, {
  featureType: 'local',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffffff'
  }
}, {
  featureType: 'railway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off',
    weight: '1'
  }
}, {
  featureType: 'railway',
  elementType: 'geometry.fill',
  stylers: {
    color: '#9494941a'
  }
}, {
  featureType: 'railway',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#ffffff1a'
  }
}, {
  featureType: 'subway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off',
    weight: '1'
  }
}, {
  featureType: 'subway',
  elementType: 'geometry.fill',
  stylers: {
    color: '#c3bed433'
  }
}, {
  featureType: 'subway',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#ffffff33'
  }
}, {
  featureType: 'subway',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'subway',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#979c9aff'
  }
}, {
  featureType: 'subway',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffffff'
  }
}, {
  featureType: 'continent',
  elementType: 'labels',
  stylers: {
    visibility: 'on'
  }
}, {
  featureType: 'continent',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'on'
  }
}, {
  featureType: 'continent',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#333333ff'
  }
}, {
  featureType: 'continent',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffffff'
  }
}, {
  featureType: 'city',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'on'
  }
}, {
  featureType: 'city',
  elementType: 'labels',
  stylers: {
    visibility: 'on'
  }
}, {
  featureType: 'city',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#454d50ff'
  }
}, {
  featureType: 'city',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffffff'
  }
}, {
  featureType: 'town',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'on'
  }
}, {
  featureType: 'town',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'town',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#454d50ff'
  }
}, {
  featureType: 'town',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffffff'
  }
}, {
  featureType: 'road',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'road',
  elementType: 'geometry.fill',
  stylers: {
    color: '#fbfffeff'
  }
}, {
  featureType: 'poilabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'districtlabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'poilabel',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#999999ff'
  }
}, {
  featureType: 'districtlabel',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#888fa0ff'
  }
}, {
  featureType: 'transportation',
  elementType: 'geometry',
  stylers: {
    color: '#d1dbdbff'
  }
}, {
  featureType: 'companylabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'restaurantlabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'lifeservicelabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'carservicelabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'financelabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'otherlabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'village',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'district',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'land',
  elementType: 'geometry',
  stylers: {
    color: '#edf3f3ff'
  }
}, {
  featureType: 'nationalway',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#cacfcfff'
  }
}, {
  featureType: 'provincialway',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#cacfcfff'
  }
}, {
  featureType: 'cityhighway',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#cacfcfff'
  }
}, {
  featureType: 'road',
  elementType: 'geometry.stroke',
  stylers: {
    color: '#cacfcfff'
  }
}, {
  featureType: 'subwaylabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'subwaylabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'tertiarywaysign',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'tertiarywaysign',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'provincialwaysign',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'provincialwaysign',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'nationalwaysign',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'nationalwaysign',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'highwaysign',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'highwaysign',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'nationalway',
  elementType: 'geometry.fill',
  stylers: {
    color: '#fbfffeff'
  }
}, {
  featureType: 'nationalway',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#999999ff'
  }
}, {
  featureType: 'provincialway',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#999999ff'
  }
}, {
  featureType: 'cityhighway',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#999999ff'
  }
}, {
  featureType: 'cityhighway',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffffff'
  }
}, {
  featureType: 'highway',
  stylers: {
    level: '6',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'highway',
  stylers: {
    level: '7',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'highway',
  stylers: {
    level: '8',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'highway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off',
    level: '6',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'highway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off',
    level: '7',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'highway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off',
    level: '8',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'highway',
  elementType: 'labels',
  stylers: {
    visibility: 'off',
    level: '6',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'highway',
  elementType: 'labels',
  stylers: {
    visibility: 'off',
    level: '7',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'highway',
  elementType: 'labels',
  stylers: {
    visibility: 'off',
    level: '8',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'nationalway',
  stylers: {
    level: '6',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'nationalway',
  stylers: {
    level: '7',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'nationalway',
  stylers: {
    level: '8',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'nationalway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off',
    level: '6',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'nationalway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off',
    level: '7',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'nationalway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off',
    level: '8',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'nationalway',
  elementType: 'labels',
  stylers: {
    visibility: 'off',
    level: '6',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'nationalway',
  elementType: 'labels',
  stylers: {
    visibility: 'off',
    level: '7',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'nationalway',
  elementType: 'labels',
  stylers: {
    visibility: 'off',
    level: '8',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'provincialway',
  stylers: {
    level: '8',
    curZoomRegionId: '0',
    curZoomRegion: '8-8'
  }
}, {
  featureType: 'provincialway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off',
    level: '8',
    curZoomRegionId: '0',
    curZoomRegion: '8-8'
  }
}, {
  featureType: 'provincialway',
  elementType: 'labels',
  stylers: {
    visibility: 'off',
    level: '8',
    curZoomRegionId: '0',
    curZoomRegion: '8-8'
  }
}, {
  featureType: 'cityhighway',
  stylers: {
    level: '6',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'cityhighway',
  stylers: {
    level: '7',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'cityhighway',
  stylers: {
    level: '8',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'cityhighway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off',
    level: '6',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'cityhighway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off',
    level: '7',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'cityhighway',
  elementType: 'geometry',
  stylers: {
    visibility: 'off',
    level: '8',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'cityhighway',
  elementType: 'labels',
  stylers: {
    visibility: 'off',
    level: '6',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'cityhighway',
  elementType: 'labels',
  stylers: {
    visibility: 'off',
    level: '7',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'cityhighway',
  elementType: 'labels',
  stylers: {
    visibility: 'off',
    level: '8',
    curZoomRegionId: '0',
    curZoomRegion: '6-8'
  }
}, {
  featureType: 'cityhighway',
  elementType: 'geometry.fill',
  stylers: {
    color: '#fbfffeff'
  }
}, {
  featureType: 'water',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#8f5a33ff'
  }
}, {
  featureType: 'water',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffffff'
  }
}, {
  featureType: 'country',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#8f5a33ff'
  }
}, {
  featureType: 'country',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffffff'
  }
}, {
  featureType: 'country',
  elementType: 'labels.text',
  stylers: {
    fontsize: '28'
  }
}, {
  featureType: 'manmade',
  elementType: 'geometry',
  stylers: {
    color: '#dfe7e7ff'
  }
}, {
  featureType: 'provincialway',
  elementType: 'geometry.fill',
  stylers: {
    color: '#fbfffeff'
  }
}, {
  featureType: 'tertiaryway',
  elementType: 'geometry.fill',
  stylers: {
    color: '#fbfffeff'
  }
}, {
  featureType: 'manmade',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#999999ff'
  }
}, {
  featureType: 'manmade',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffffff'
  }
}, {
  featureType: 'scenicspots',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#999999ff'
  }
}, {
  featureType: 'scenicspots',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffffff'
  }
}, {
  featureType: 'airportlabel',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#999999ff'
  }
}, {
  featureType: 'airportlabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'scenicspotslabel',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#999999ff'
  }
}, {
  featureType: 'scenicspotslabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'educationlabel',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#999999ff'
  }
}, {
  featureType: 'educationlabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'medicallabel',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#999999ff'
  }
}, {
  featureType: 'medicallabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'companylabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'restaurantlabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'hotellabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'hotellabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'shoppinglabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'shoppinglabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'lifeservicelabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'carservicelabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'transportationlabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'transportationlabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'financelabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'entertainment',
  elementType: 'geometry',
  stylers: {
    color: '#d1dbdbff'
  }
}, {
  featureType: 'estate',
  elementType: 'geometry',
  stylers: {
    color: '#d1dbdbff'
  }
}, {
  featureType: 'shopping',
  elementType: 'geometry',
  stylers: {
    color: '#d1dbdbff'
  }
}, {
  featureType: 'education',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#999999ff'
  }
}, {
  featureType: 'education',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffffff'
  }
}, {
  featureType: 'medical',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#999999ff'
  }
}, {
  featureType: 'medical',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffffff'
  }
}, {
  featureType: 'transportation',
  elementType: 'labels.text.fill',
  stylers: {
    color: '#999999ff'
  }
}, {
  featureType: 'transportation',
  elementType: 'labels.text.stroke',
  stylers: {
    color: '#ffffffff'
  }
}, {
  featureType: 'road',
  elementType: 'geometry',
  stylers: {
    visibility: 'on'
  }
}, {
  featureType: 'nationalway',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'provincialway',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'cityhighway',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'tertiaryway',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'fourlevelway',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'water',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'manmade',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'education',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'medical',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'scenicspots',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'transportation',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'entertainmentlabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'estatelabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'businesstowerlabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'governmentlabel',
  elementType: 'labels.icon',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'governmentlabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'businesstowerlabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'estatelabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'entertainmentlabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'medicallabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'educationlabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'scenicspotslabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'airportlabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}, {
  featureType: 'poilabel',
  elementType: 'labels',
  stylers: {
    visibility: 'off'
  }
}];
